#!/bin/bash

# 如果没有传入参数，则执行导出操作

# 设置变量
MYSQL_CONTAINER_NAME="mysql56"
MYSQL_ROOT_PASSWORD="root"
DB_NAME="webman_admin"
SAVE_DIR="./data"

# 如果没有参数，或者参数为 e ，则执行导出操作
if [ -z "$1" ] || [ "$1" == "e" ]; then

    # 如果没有任何参数，就设置 SQL 文件名为 $SAVE_DIR/db.sql
    SQL="$SAVE_DIR/db.sql"
    # 否则就使用参数2作为 SQL 文件名
    if [ -n "$2" ]; then
        SQL="$SAVE_DIR/$2.sql"
    fi

    # 确保宿主机上的 data 目录存在
    mkdir -p ./data
    echo "正在导出数据库..."
    # 使用 docker exec 执行 mysqldump 导出数据库
    docker exec $MYSQL_CONTAINER_NAME sh -c "mysqldump -u root -p\"$MYSQL_ROOT_PASSWORD\" $DB_NAME > /tmp/db.sql"

    echo "正在复制文件..."
    # 将容器内的临时文件复制到宿主机的 data 目录
    docker cp $MYSQL_CONTAINER_NAME:/tmp/db.sql $SQL

    # 清理容器内的临时文件（可选）
    docker exec $MYSQL_CONTAINER_NAME sh -c 'rm /tmp/db.sql'

    # 输出完成信息
    echo "数据库导出完成，文件保存在 $SQL"


    exit 1
fi

# 如果传入参数，则执行导入操作

# 如果参数1是 i 就设置 sql 变量为 $SAVE_DIR/db.sql
SQL="$SAVE_DIR/db.sql"
if [ "$1" != "i" ]; then
    SQL="$1"
fi
# 全量导入，删除现有数据库的所有表
echo "正在删除现有数据库 $DB_NAME 的所有表..."
docker exec $MYSQL_CONTAINER_NAME mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "DROP DATABASE IF EXISTS $DB_NAME; CREATE DATABASE $DB_NAME;"

# 确保 $SAVE_DIR/db.sql 文件存在
if [ ! -f "$SQL" ]; then
    echo "错误：$SQL 文件不存在！"
    exit 1
fi

docker exec $MYSQL_CONTAINER_NAME mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "CREATE DATABASE IF NOT EXISTS $DB_NAME;"
# 创建数据库（如果不存在）

echo "正在复制文件...$SQL"
# 复制 SQL 文件到容器
docker cp $SQL $MYSQL_CONTAINER_NAME:/tmp/db.sql

echo "正在导入数据..."
# 在容器内执行导入
docker exec $MYSQL_CONTAINER_NAME sh -c "mysql -u root -p\"$MYSQL_ROOT_PASSWORD\" $DB_NAME < /tmp/db.sql"

# 清理容器内的临时文件（可选）
docker exec $MYSQL_CONTAINER_NAME sh -c "rm /tmp/db.sql"

echo "数据导入完成！"
